home *** CD-ROM | disk | FTP | other *** search
-
- //
- // Description:
- // Tool Bar example demonstrating now to derive new toolbar classes from
- // 'toolbar.js' base class. Defines new class called myCreationTools.
- //
- // Super class:
- // myclasses/toolbars/toolbar.js
- //
- // Constructor:
- // toolbar = new myCreationTools();
- //
- // Attributes:
- // --
- //
- // Methods:
- // --
- //
-
- include("myclasses/toolbars/mytoolbar.js"); // super class
- include("real/layer/r3prilay.js"); // geometrics objects layer
-
- // geometric objects
- include("real/objects/r3sphere.js");
- include("real/objects/r3nurbs.js");
- include("real/objects/r3numesh.js");
- include("real/objects/r3subdiv.js");
- include("real/objects/r3rect.js");
- include("real/objects/r3cube.js");
- include("real/objects/r3pyrami.js");
- include("real/objects/r3cone.js");
- include("real/objects/r3camera.js");
-
- function mycreRect(button, event, value)
- {
- rect = new r3Rect(0);
-
- rect.SetP0(new r3Vect(0.0, 0.0, 0.0));
- rect.SetP1(new r3Vect(0.1, 0.0, 0.0));
- rect.SetP2(new r3Vect(0.0, 0.1, 0.0));
- button.layer.LOCKEXCLUSIVE(0);
- button.layer.INSERT(0, 0, rect);
- button.layer.RELEASE(0);
- }
-
- function mycreCube(button, event, value)
- {
- cube = new r3Cube(0);
-
- cube.SetP0(new r3Vect(0.0, 0.0, 0.0));
- cube.SetP1(new r3Vect(0.1, 0.0, 0.0));
- cube.SetP2(new r3Vect(0.0, 0.1, 0.0));
- cube.SetP3(new r3Vect(0.0, 0.0, 0.1));
- button.layer.LOCKEXCLUSIVE(0);
- button.layer.INSERT(0, 0, cube);
- button.layer.RELEASE(0);
- }
-
- function mycrePyramid(button, event, value)
- {
- pyram = new r3Pyramid(0);
-
- pyram.SetP0(new r3Vect(0.0, 0.0, 0.0));
- pyram.SetP1(new r3Vect(0.2, 0.0, 0.0));
- pyram.SetP2(new r3Vect(0.0, 0.2, 0.0));
- pyram.SetP3(new r3Vect(0.1, 0.1, 0.1));
- button.layer.LOCKEXCLUSIVE(0);
- button.layer.INSERT(0, 0, pyram);
- button.layer.RELEASE(0);
- }
-
- function mycreCone(button, event, value)
- {
- cone = new r3Cone(0);
-
- // define apex (center) and axes for the cone
- cone.SetCenter(new r3Vect(0.0, 0.0, 0.0));
- cone.SetA(new r3Vect(0.1, 0.0, 0.0));
- cone.SetB(new r3Vect(0.0, 0.1, 0.0));
- cone.SetC(new r3Vect(0.0, 0.0, 0.1));
-
- // define clipping plane (one point and two vectors defining plane)
- cone.SetP(new r3Vect(0.0, 0.0, 0.1));
- cone.SetM(new r3Vect(1.0, 0.0, 0.0));
- cone.SetN(new r3Vect(0.0, 1.0, 0.0));
- button.layer.LOCKEXCLUSIVE(0);
- button.layer.INSERT(0, 0, cone);
- button.layer.RELEASE(0);
- }
-
- function mycreCamera(button, event, value)
- {
- cam = new r3Camera(0);
-
- cam.SetPosition(new r3Vect(0.2, 0.0, 0.0));
- cam.SetDirection(new r3Vect(0.0, 0.0, 0.0));
- cam.SetUp(new r3Vect(0.1, 0.1, 0.0));
- cam.SetSide(new r3Vect(0.1, 0.0, 0.1));
- cam.SetName("Left view");
- button.layer.LOCKEXCLUSIVE(0);
- button.layer.INSERT(0, 0, cam);
- button.layer.RELEASE(0);
- }
-
- function mycreSphere(button, event, value)
- {
- sphere = new r3Sphere(0);
-
- sphere.SetCenter(new r3Vect(0.1, 0.0, 0.0));
- sphere.SetRadius(0.1);
- sphere.SetColor(new r3Vect(1.0, 0.0, 0.0));
- sphere.SetName("My cool sphere");
- button.layer.LOCKEXCLUSIVE(0);
- button.layer.INSERT(0, 0, sphere);
- button.layer.RELEASE(0);
- }
-
- // create a nurbs curve
-
- function mycreNurbs(button, event, value)
- {
- pcount = 10;
- p = new r3Vect();
-
- nurbs = new r3Nurbs(0);
- nurbs.SetOrder(4);
- nurbs.SetCount(pcount);
- nurbs.SetClosed(FALSE);
-
- for(i = 0; i < pcount; i++) {
- p.set(0.1 * Math.sin(10 * Math.PI * i / pcount),
- 0.1 * Math.cos(10 * Math.PI * i / pcount),
- 0.1 * i / pcount);
- nurbs.SETPOINT(i, p);
- }
- button.layer.LOCKEXCLUSIVE(0);
- button.layer.INSERT(0, 0, nurbs);
- button.layer.RELEASE(0);
- }
-
- // create a nurbs mesh
-
- function mycreNumesh(button, event, value)
- {
- p = new r3Vect();
- knots_u = [0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 6.0, 6.0, 6.0];
- knots_v = [0.0, 0.0, 0.0, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0];
- var count_u = 9;
- var count_v = 5;
-
- mesh = new r3Numesh(0);
- mesh.SetOrderU(4);
- mesh.SetOrderV(4);
- mesh.SetCountU(count_u);
- mesh.SetCountV(count_v);
- mesh.SetClosedU(FALSE);
- mesh.SetClosedV(FALSE);
- mesh.SetKnotsU(knots_u);
- mesh.SetKnotsV(knots_v);
-
- for(v = 0; v < count_v; v++) {
- for(u = 0; u < count_u; u++) {
- p.x = 0.1 * u / count_u;
- p.y = 0.1 * v / count_v + 0.01 * Math.sin(Math.PI * 2.0 * u / count_v);
- p.z = 0.0;
- i = v*count_u + u;
- mesh.SETPOINT(i, p);
- }
- }
- button.layer.LOCKEXCLUSIVE(0);
- button.layer.INSERT(0, 0, mesh);
- button.layer.RELEASE(0);
- }
-
-
- // create a subdivision rectangle
-
- function mycreSubdiv(button, event, value)
- {
- sds = new r3Subdivision(0);
- sds.SetPointCount(4);
- sds.SetType(R3SUBDIVTYPE_POLYGONAL);
-
- sds.SETPOINT(0, new r3Vect(0.0, 0.0, 0));
- sds.SETPOINT(1, new r3Vect(0.2, 0.0, 0));
- sds.SETPOINT(2, new r3Vect(0.2, 0.2, 0));
- sds.SETPOINT(3, new r3Vect(0.0, 0.2, 0));
-
- sds.MAKEFACE(4, [0, 1, 2, 3]);
-
- button.layer.LOCKEXCLUSIVE(0);
- button.layer.INSERT(0, 0, sds);
- button.layer.RELEASE(0);
- }
-
-
- // Constructor
-
- function myCreationTools(orientation)
- {
- if(arguments.length == 0)
- return;
-
- // create JavaScript interface for accessing geometric objects layer
- primLayer = new r3Primlayer();
- primLayer.r3Attach(Get("CurrentProject.Geometrics"));
-
- // let the super class to do its job
- this.base = myToolBar;
- this.base("Creation Tools", VERTICAL, primLayer);
-
- // Add tool buttons.
- this.AddTool("Camera", mycreCamera);
- this.AddTool("Sphere", mycreSphere);
- this.AddTool("Cone", mycreCone);
- this.AddTool("Rect", mycreRect);
- this.AddTool("Cube", mycreCube);
- this.AddTool("Pyramid", mycrePyramid);
- this.AddTool("Nurbs", mycreNurbs);
- this.AddTool("Numesh", mycreNumesh);
- this.AddTool("SDS", mycreSubdiv);
- }
-
- myCreationTools.prototype=new myToolBar;
-